package cn.elwy.rcp.ui;

import java.io.InputStream;
import java.util.Properties;

import cn.elwy.common.exception.RunException;
import cn.elwy.common.util.ConvertTypeUtil;

/**
 * 读取系统默认配置信息
 * @author huangsq
 * @version 2.0, 2013-10-01
 * @since 1.0, 2013-02-19
 */
public class Config extends Properties {

  private static final long serialVersionUID = 1L;

  public static Config config = new Config();

  private Config() {
    InputStream inputStream = null;
    try {
      inputStream = Config.class.getResourceAsStream("/config.properties");
      if (inputStream == null) {
        inputStream = Config.class.getResourceAsStream("config.properties");
      }
      load(inputStream);
    } catch (Exception e) {
      throw new RunException("load_config_error", e);
    } finally {
      try {
        if (inputStream != null) {
          inputStream.close();
          inputStream = null;
        }
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }

  /**
   * 获取属性的值，如果值不存在将返回""
   * @param key 关键字
   * @return
   */
  public static String get(String key) {
    return get(key, "");
  }

  /**
   * 获取属性的值，如果值不存在将返回defaultValue
   * @param key 关键字
   * @param defaultValue 缺省值
   * @return
   */
  public static String get(String key, String defaultValue) {
    String value = config.getProperty(key);
    if (value != null) {
      return value;
    }
    return defaultValue;
  }

  /**
   * 获取属性的值，如果值不存在将返回0
   * @param key 关键字
   * @return
   */
  public static int getInt(String key) {
    return getInt(key, 0);
  }

  /**
   * 获取属性的值，如果值不存在将返回defaultValue
   * @param defaultValue 缺省值
   * @param key 关键字
   * @return
   */
  public static int getInt(String key, int defaultValue) {
    String value = get(key);
    return ConvertTypeUtil.toInteger(value, defaultValue);
  }

  /**
   * 获取属性的值，如果值不存在将返回false
   * @param key 关键字
   * @return
   */
  public static boolean getBoolean(String key) {
    return getBoolean(key, false);
  }

  /**
   * 获取属性的值，如果值不存在将返回false
   * @param key 关键字
   * @param defaultValue 缺省值
   * @return
   */
  public static boolean getBoolean(String key, boolean defaultValue) {
    String value = get(key);
    return ConvertTypeUtil.toBoolean(value, defaultValue);
  }

  /**
   * 根据分隔符获取属性的值，以数组的形式返回
   * @param key 关键字
   * @return
   */
  public String[] getArray(String key) {
    return getArray(key, ",");
  }

  /**
   * 根据分隔符获取属性的值，以数组的形式返回
   * @param key 关键字
   * @param separate 分隔符
   * @return
   */
  public String[] getArray(String key, String separate) {
    String value = get(key);
    return ConvertTypeUtil.toArray(value, separate);
  }

}
